package com.tjn.throws_;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author 陶镓妮
 * @version 1.0
 */
public class ThrowsDetail {
    public static void main(String[] args) {

    }
    public void f1(){
        //2.运行时异常，程序中如果没有处理，默认就是throws方法处理
        //处理异常时，throws和try-catch二选一
        int n1 = 10;
        int n2 = 0;
        int res = n1 / n2;
    }

    public static void f2() throws FileNotFoundException {
        //这个地方写f3()会报错
        //4.因为在f2里面调用f3，而f3抛出的是一个编译异常，这个时候f2就必须要去处理异常
        //所以要在f2()后面加上throws FileNotFoundException或者使用try-Catch
        f3();
    }

    public static void f3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("d:\\a.txt");
    }

    public static void f4(){
        //这里调用f5()不会报错
        //5.因为f5()抛出的是运行异常
        //对于运行异常，有默认处理机制，f4()后面默认有throws ArithmeticException
        f5();
    }

    public static void f5() throws ArithmeticException{

    }
}

class Father{
    public void method() throws RuntimeException{

    }
}

class Son extends Father{
    //3.子类重写父类的方法时，抛出的异常类型必须是父类抛出异常类型的子类，或者类型一致
    //比如这里RuntimeException是NullPointerException的父类，也就是继承类型要一致
    @Override
    public void method() throws NullPointerException{

    }
}